import { useStorage } from "../untils/storeage";
// eslint-disable-next-line import/no-anonymous-default-export
export default {
  namespace: "global",
  state: {},
  effects: {
    /*
        可以做异步操作 但是不能直接修改state
        修改state必须使用put方法调用reducers方法
    */
    *setUserInfo({ payload }: any, { put }: any) {
      yield put({
        type: "save",
        payload,
      });
    },
  },
  reducer: {
    // 只能放纯函数
  },
  subscriptions: {
    setup({ history }: any) {
      // 每次路由变化触发

      history.listen((router: any) => {
        const storage = useStorage(window.localStorage);
        const token = storage.get("login")?.token;
        const ignoreNameList =["/login"] // 设置白名单
        if (!token && !ignoreNameList.includes(router.pathname)) {
          /*
            这里有个bug 使用dva提供跳转方法history.push("/login")会出现死循环跳转
            暂时使用原生创建a标签域形式 拦截的时候会出现页面跳一下后期修复
          */
          const a = document.createElement("a");
          a.href = "http://localhost:3000/#/login";
          a.setAttribute("target", "_self");
          a.click();
        }
      });
    },
  },
};
